package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
 * JAVA IO
 * java io
 * 可以让我们用标准的读写操作来完成对不同设备的读写工作
 * java将IO按照方向划分为输入与输出,参照点是我们写的程序
 * 输入:用来读取数据的,是从外界到程序的方向,用于获取数据
 * 输出:用来写出数据的,是从程序到外界的方向,用于发送数据
 * java将IO比喻为"流",即:stream.就像生活中的:"电流","水流"一样,它是以同一个方向顺序
 * 移动的过程,只不过这里流动的是字节(2进制数据)
 * 所以在IO中有输入流和输出流之分,我们理解他们是连接程序与另一端的"管道",用于获取或发送数据
 * 到另一端
 *
 * Java定义了两个超类(抽象类)
 * java.io.InputSream:所有字节输入流的超类,其中定义了读取数据的方法,因此将来不管读取的
 * 是什么设备(连接该设备的流)都有这些读取的方法,因此我们可以用相同的方法读取不同设备中的数据
 * java.io.OutputSream:所有字节输出流的超类,其中定义了写出数据的方法
 *
 * 文件流
 * 文件流是一对低级流,用于连接程序与文件(硬盘)的"管道".负责读写数据
 * java.io.FileOutputStream个java.io.FileOutputStream
 */
public class FOSDemo {
    /*
    构造方法
    FileOutputStream(File file)
    FileOutputStream(String path)
    以上两种方式创建的文件流是覆盖模式,即:在创建文件流时若指定的文件已经存在
    则会将该文件原有的内容抹除.之后通过当前流写出的内容都会保留咋文件中

    FileOutputStream(File file boolean append)
    FileOutputStream(String path boolean append)
    文件流有重载的构造方法,允许我们传入一个Boolean参数,该值入如果为true,则文件流创建时是追加模式
    即:创建文件流是若指定文件存在,则原内容全部保留,通过当前流写入的新内容都会被顺序追加到文件中
    */
    public static void main(String[] args) throws IOException {
    FileOutputStream fos=new FileOutputStream("fos.txt",true);
  //  String line="给我在成都的街头走一走.噢噢噢噢";
   // byte[] data=line.getBytes("UTF-8");
   // fos.write(data);
  //  line="直到所有的等都熄灭了也不停留.";
  //  fos.write(line.getBytes("UTF-8"));
        fos.write("我会把手揣进裤兜,".getBytes("UTF-8"));
        fos.write("走到九月九".getBytes("UTF-8"));
        System.out.println("写出完毕!");
        fos.close();
    }
}
